﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;
using Sistema.Modelo.Financeiro;
namespace Sistema.Dao.Financeiro
{
    class daoPlanoDePagamento
    {
        Mensagens men = new Mensagens();
        SqlDataAdapter dr;
        String Mensagem;
        ///
        ///
        ///
        ///
        public String getMensagem()//metodo de retorno de resultado de pesquisa
        {
            return Mensagem;
        }
        ///
        ///
        ///
        ///
        public SqlDataAdapter getSelect()//metodo de retorno de resultado de pesquisa
        {
            return dr;
        }
        ///
        ///
        ///
        ///
        public void SelecionarPlanoPagamento(String Busca, int selecao)
        {
            try
            {
                String[] stringconecao = new String[5];//string em array para armazenar mais de um tipo de selecao
                stringconecao[0] = "SELECT * FROM Plano_Pagamento ORDER BY Plano_Pagamento_Descricao;";
                if (selecao == 1)
                {
                    stringconecao[1] = "SELECT * FROM Plano_Pagamento WHERE Plano_Pagamento_Codigo = '" + Convert.ToUInt16(Busca) + "' ORDER BY Plano_Pagamento_Descricao;";
                }
                stringconecao[2] = "SELECT * FROM Plano_Pagamento WHERE Plano_Pagamento_Descricao like '%" + Busca + "%' ORDER BY Plano_Pagamento_Descricao;";
                stringconecao[3] = "SELECT * FROM Plano_Pagamento WHERE Quantidade_Parcelas like '%" + Busca + "%' ORDER BY Plano_Pagamento_Descricao;";
                stringconecao[4] = "SELECT * FROM Plano_Pagamento WHERE Manter_Data_Vencimento like '%" + Busca + "%' ORDER BY Plano_Pagamento_Descricao;";

                StringConecao con = new StringConecao();
                string sqlcon = con.getconecao();
                SqlConnection sqlconn = new SqlConnection(sqlcon);
                sqlconn.Open();
                string mSQL = stringconecao[selecao];
                SqlCommand crm = new SqlCommand(mSQL, sqlconn);
                this.dr = new SqlDataAdapter(crm);
                sqlconn.Close();
            }
            catch (Exception ex)
            {
                Mensagem = "Erro na execução com o banco de dados" + "\n" + Convert.ToString(ex);
            }
        }
        ///
        ///
        ///
        ///
        public void ExecutarProcedimentoPlanoPagamento(modPlanoDePagamento a, int Procedimento)
        {
            try
            {
                int Plano_Pagamento_Codigo = Convert.ToInt16(null);
                String Plano_Pagamento_Descricao = null;
                int Numero_dias_Para_Entrada = Convert.ToInt16(null);
                int Quantidade_Parcelas = Convert.ToInt16(null);
                int Intervalo_Dias = Convert.ToInt16(null);
                String Manter_Data_Vencimento = null;
                Double Porcentage_Maxima_Desconto = Convert.ToDouble(null);
                Double Porcentage_Maxima_Acrecimo = Convert.ToDouble(null);

                if (Procedimento == 1)
                {//Cadastrar
                    Plano_Pagamento_Descricao = a.Plano_Pagamento_Descricao;
                    Numero_dias_Para_Entrada = a.Numero_dias_Para_Entrada;
                    Quantidade_Parcelas = a.Quantidade_Parcelas;
                    Intervalo_Dias = a.Intervalo_Dias;
                    Manter_Data_Vencimento = a.Manter_Data_Vencimento;
                    Porcentage_Maxima_Desconto = a.Porcentage_Maxima_Desconto;
                    Porcentage_Maxima_Acrecimo = a.Porcentage_Maxima_Acrecimo;

                }
                ////////////////////
                else if (Procedimento == 2)
                {//Alterar
                    Plano_Pagamento_Codigo = a.Plano_Pagamento_Codigo;
                    Plano_Pagamento_Descricao = a.Plano_Pagamento_Descricao;
                    Numero_dias_Para_Entrada = a.Numero_dias_Para_Entrada;
                    Quantidade_Parcelas = a.Quantidade_Parcelas;
                    Intervalo_Dias = a.Intervalo_Dias;
                    Manter_Data_Vencimento = a.Manter_Data_Vencimento;
                    Porcentage_Maxima_Desconto = a.Porcentage_Maxima_Desconto;
                    Porcentage_Maxima_Acrecimo = a.Porcentage_Maxima_Acrecimo;
                }
                ////////////////////
                else if (Procedimento == 3)
                {//Excluir
                    Plano_Pagamento_Codigo = a.Plano_Pagamento_Codigo;
                    Plano_Pagamento_Descricao = a.Plano_Pagamento_Descricao;
                    Numero_dias_Para_Entrada = a.Numero_dias_Para_Entrada;
                    Quantidade_Parcelas = a.Quantidade_Parcelas;
                    Intervalo_Dias = a.Intervalo_Dias;
                    Manter_Data_Vencimento = a.Manter_Data_Vencimento;
                    Porcentage_Maxima_Desconto = a.Porcentage_Maxima_Desconto;
                    Porcentage_Maxima_Acrecimo = a.Porcentage_Maxima_Acrecimo;
                }
                ////////////////////

                StringConecao con = new StringConecao();
                string sqlcon = con.getconecao();
                SqlConnection sqlconn = new SqlConnection(sqlcon);
                sqlconn.Open();
                string mSQL;//variavel passa o nome da procidore
                mSQL = "SP_Update_Plano_Pagamento";
                SqlCommand crm = new SqlCommand(mSQL, sqlconn);

                crm.CommandType = CommandType.StoredProcedure;
                crm.Parameters.Add("@Plano_Pagamento_Codigo", SqlDbType.VarChar).Value = Plano_Pagamento_Codigo;
                crm.Parameters.Add("@Plano_Pagamento_Descricao", SqlDbType.VarChar).Value = Plano_Pagamento_Descricao;
                crm.Parameters.Add("@Numero_dias_Para_Entrada", SqlDbType.VarChar).Value = Numero_dias_Para_Entrada;
                crm.Parameters.Add("@Quantidade_Parcelas", SqlDbType.VarChar).Value = Quantidade_Parcelas;
                crm.Parameters.Add("@Intervalo_Dias", SqlDbType.VarChar).Value = Intervalo_Dias;
                crm.Parameters.Add("@Manter_Data_Vencimento", SqlDbType.VarChar).Value = Manter_Data_Vencimento;
                crm.Parameters.Add("@Porcentage_Maxima_Desconto", SqlDbType.VarChar).Value = Porcentage_Maxima_Desconto;
                crm.Parameters.Add("@Porcentage_Maxima_Acrecimo", SqlDbType.VarChar).Value = Porcentage_Maxima_Acrecimo;
                crm.Parameters.Add("@Data_Cadastro", SqlDbType.VarChar).Value = "";
                crm.Parameters.Add("@Operacao", SqlDbType.VarChar).Value = Procedimento;
                crm.Parameters.Add("@Novocodigo", SqlDbType.VarChar).Value = "";
                crm.Parameters.Add("@Retorno", SqlDbType.VarChar).Value = "";

                var returnParameter = crm.Parameters.Add("@Retorno", SqlDbType.Int);//comando para selecionar o retorno da procedimento
                returnParameter.Direction = ParameterDirection.ReturnValue;//retorno do procedimento

                crm.ExecuteNonQuery();
                Mensagem = men.getGerarMensagem(returnParameter.Scale.ToString());//recebendo a variavel
                sqlconn.Close();
            }
            catch (Exception ex)
            {
                Mensagem = "Erro na execução com o banco de dados" + "\n" + Convert.ToString(ex);
            }

        }
        ///
        ///
        ///
        ///
    }
}
